﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WindowsFormsApplication1
{
    class Facture
    {
        private int id;
        private ReservationFinie reservation;
        private double montantTotal,montantBase,supplementAdulte,supplementEnfant,supplementVehicule,forfaitElectricite;
        private string dateFacture;

        public Facture(int id, ReservationFinie reservation, double montantTotal, string date, double montantBase, double supplementAdulte, double supplementEnfant, double supplementVehicule, double forfaitElectricite)
        {
            this.id = id;
            this.reservation = reservation; //Réservation liée à la facture
            this.montantTotal = montantTotal;
            this.dateFacture = date;
            this.montantBase = montantBase; //Forfait de base
            this.supplementAdulte = supplementAdulte; //Supplément par adulte
            this.supplementEnfant = supplementEnfant; //Supplément par enfant
            this.supplementVehicule = supplementVehicule; //Supplément pour un véhicule en station
            this.forfaitElectricite = forfaitElectricite; //Forfait quotidien pour l'usage de l'életricité
        }

        public void EtablirFacture()
        {            
            montantTotal = montantBase + supplementAdulte * GetNbPersonnesSupplementaires() + supplementEnfant * reservation.GetNbEnfants();
            if (reservation.GetVehicule()) //possession d'un véhicule
            {
                montantTotal += supplementVehicule; 
            }
            if (reservation.GetElectricite()) //usage de l'électricité
            {
                montantTotal += forfaitElectricite;
            }
        }

        public Boolean ImprimerFacture()
        {
            Boolean res = false;
            return res;
        }
     
        /* Getters */

        public int GetNbPersonnesSupplementaires()
        {
            if (reservation.GetNbAdultes() <= 2)
            {
                return 0; //Pas d'adultes supplémentaires si le nombre d'adultes est < à 0.
            }
            else
            {
                return reservation.GetNbAdultes()-2; //Nombre d'adultes supplémenaires
            }
        }

        public int GetId()
        {
            return id;
        }
        
        public ReservationFinie GetReservation()
        {
            return reservation;
        }

        public double GetMontantTotal()
        {
            return montantTotal;
        }

        public string GetDateFacture()
        {
            return dateFacture;
        }

        public double GetMontantBase()
        {
            return montantBase;
        }

        public double GetSupplementAdulte()
        {
            return supplementAdulte;
        }

        public double GetSupplementEnfant()
        {
            return supplementEnfant;
        }

        public double GetSupplementVehicule()
        {
            return supplementVehicule;
        }

        public double GetForfaitElectricite()
        {
            return forfaitElectricite;
        }

    }
}
